package map;

import java.util.HashMap;
import java.util.Map;

/*
* java.util.Map接口
* map(查找表) 体现的结构是一个多行两列的表格，左列称为key 右列称为value Map总是根据key获取对应的value
*
* 常用的实现类
* HashMap 使用散列算法实现
* TreeMap 使用二叉树实现Map
*
* Map不是一个集合
* 但是Map是java集合框架中的一员
* */
public class MapDemo1 {
    public static void main(String[] args) {

        /*
        * Map<k,v> Map中可以分别指定key和value指定泛型
        * 注 : 泛型只能是引用类型
        * */
        Map<String,Integer> map = new HashMap();
        /*
        * V put(K k,V v)方法时存在返回值的 返回值为vaule被替换的key
        *
        * */
        map.put("语文",98);
        map.put("数学",98);
        map.put("英语",98);
        map.put("地理",98);
        /*
         * map默认重写了toString()方法
         * map在打印时 输出顺序和存放顺序会出现不一样的情况(由算法导致的此情况的发生)
         * map通常使用在通过key获取value 所以不用太过于关心顺序问题
         * */
        System.out.println(map);
        /*
        * 在Map中Key是不能重复出现的
        * 所以当我们对同一个key进行操作时是更改value的值
        * put 会返回key中被替换的value
        * 当前YuWen中存放的就是98 被80替换掉的数据
        * */
        Integer YuWen = map.put("语文", 80);
        System.out.println(YuWen);

        /*
        * V get(Object key)  根据key获取value
        * 如果key不存在则返回null
        * */
        System.out.println(map.get("语文"));
        System.out.println(map.get("体育")); //当前hashMap中并不存在名为体育的key

        /*
        * size 返回集合的元素个数
        * */
        int size = map.size();
        //删除map
        //map.clear();
        //判断map是否为空
        map.isEmpty();
        //根据key删除key所对应的键值对，返回值为这个key对应的value
        YuWen = map.remove("语文");
        System.out.println(YuWen);

        //判断指定的key是否存在
        map.containsKey("体育");
        //判断指定的value是否存在
        map.containsValue(80);

        String name = "asfgfwaefawfawfa";
        for(int i=0;i<name.length();i++){
            System.out.println(name.charAt(i));
        }

    }
}
